﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DecisionFramework.Logging
{
	/// <summary>
	/// Specifies the interface for a "Windows 7" like logging channel
    /// but with more helpful intelligent events.
	/// </summary>
	/// <remarks>
    /// <para>
    /// Implementations can be provided for to work with
    /// the pre Windows 7 style event viewer or post Windows 7 style 
    /// event viewer.
    /// </para>
	/// Author: Greg Cowin
	/// </remarks>
	public interface IChannel
	{
		/// <summary>
		/// The Company name.
		/// </summary>
		string CompanyName { get; }

		/// <summary>
		/// The name of the technology or the container that hosts the running system.
		/// </summary>
		string ContainerOrTechnology { get; }

		/// <summary>
		/// The type of the channel: Admin, Operational, Analytic, Debug.
		/// </summary>
		ChannelType ChannelType { get; }

		/// <summary>
		/// Returns the log channel for the given component name.
		/// </summary>
		/// <param name="componentName">The name of the component to get channel for.</param>
		/// <returns>The log channel for the given component name.</returns>
		ILogChannel this[string componentName] { get; }
	}
}
